const Address =require('../model/addr.model')
class AddrService {
   //添加地址
    async createAddr(addr) {
        const res = await Address.create(addr)
        return res.dataValues
    }
    //获取地址列表
    async findAddr(user_id) {
        const res = await Address.findAll({
            where: {
                user_id
            },
            attributes:['id','consignee', 'phone', 'address',"is_default"]
        })
        return res
    }
    //修改地址
    async updateAddr(id,addr) {
        const res = await Address.update(addr,{
            where: {
                id
            }
        })
        return res[0] > 0
    }

    //删除地址
    async removeAddr(id) {
        const res = await Address.destroy({
            where: {
                id
            }
        })
        return res > 0  //返回布尔值
    }

    //设置默认地址
    async setDefaultAddr(user_id,id) {
        try {
            // 开启事务
            const transaction = await Address.sequelize.transaction();
            try {
                // 先将所有地址的 is_default 设置为 false
                await Address.update(
                    { is_default: false },
                    { where: { user_id }, transaction }
                );

                // 再将指定地址的 is_default 设置为 true
                const res = await Address.update(
                    { is_default: true },
                    { where: { id }, transaction }
                );

                // 提交事务
                await transaction.commit();

                return res[0] > 0;
            } catch (error) {
                // 回滚事务
                await transaction.rollback();
                throw error;
            }
        } catch (error) {
            console.error('设置默认地址时出错:', error);
            return false;
        }
    }

   }

 
 




module.exports = new AddrService()